import axios from "axios"
import { getToken, removeToken } from "./token"

const request = axios.create({
  baseURL: "https://ai.yunstorm.com",
  timeout: 60000
})

// 添加请求拦截器
//在请求发送之前 做拦截 插入一些自定义的配置 【参数的处理】
request.interceptors.request.use((config) => {
  //添加请求头
  const token = getToken("user_token")
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
}, (error) => {
  return Promise.reject(error)
})

// 添加响应拦截器
//在响应返回客户端之前 做拦截 重点处理返回的数据 
request.interceptors.response.use((response) => {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  return response.data
}, (error) => {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么

  //token失效，则跳转到登录页面
  if (error.response.status == 401) {
    removeToken("user_token")
    //退出操作
    
    //强制刷新
    window.location.reload()
  }
  if (error.response.status == 403) {
    // message.error('没有权限访问该资源')
    // ✅ 阻止异常继续往外抛
    return Promise.resolve({
      _errorHandled: true,
      status: 403,
      data: null,
    });

  }
  // console.log()
  // return Promise.reject(error)
      // ❗️其他错误继续抛出
    return Promise.reject(error);
})

export { request }
